package ace.module.stock.api;

import ace.cmp.core.model.R;
import ace.cmp.sdk.api.SdkApi;
import ace.module.common.api.model.input.TenantAndAppTypeInput;
import ace.module.stock.api.model.dto.WmsSalesQuantityDto;
import ace.module.stock.api.model.input.WmsBizInitInput;
import ace.module.stock.api.model.input.WmsBizParentIdInput;
import ace.module.stock.api.model.input.WmsBizUniqueIdInput;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import java.util.List;

/**
 * 销售数量 api.
 *
 * @author Caspar
 */
public interface WmsSalesQuantityApi extends SdkApi<WmsSalesQuantityDto, Long> {

  /**
   * 销量不存在初始化销量,存在不进行任何操作
   *
   * @return 成功 true / 失败 false
   */
  R<Void> initOrNone(@Valid @NotNull TenantAndAppTypeInput<List<WmsBizInitInput>> input);

  /**
   * 获取相关销量,根据业务id.
   *
   * @param bizUniqueIds 业务惟一键
   * @return 销量信息
   */
  R<List<WmsSalesQuantityDto>> getByBizUniqueIdIn(@Valid @NotNull TenantAndAppTypeInput<List<WmsBizUniqueIdInput>> bizUniqueIds);

  /**
   * 获取相关销量,根据业务父id.
   *
   * @param bizParentId 业务父键
   * @return 销量信息
   */
  R<List<WmsSalesQuantityDto>> getByBizParentIdIn(@Valid @NotNull TenantAndAppTypeInput<WmsBizParentIdInput> bizParentId);
}